package models

import "time"

// Organization 机构po
type Organization struct {
	ID         uint32 `json:"id" xorm:"notnull pk autoincr int id comment('id')"`                              // 主键
	Code       string `json:"code" xorm:"notnull unique default '' Varchar(50) code comment('机构编码')"`          // 机构编码
	ParentCode string `json:"parent_code" xorm:"notnull default '' Varchar(50) parent_code comment('上级机构编号')"` // 上级机构编号
	OrgName    string `json:"org_name" xorm:"notnull default '' Varchar(200) comment('机构名称')"`                 // 机构名称
	Contact    string `json:"contact" xorm:"notnull default '' Varchar(30) comment('机构联系人')"`                  // 机构联系人
	Mobile     string `json:"mobile" xorm:"notnull default '' Varchar(100) comment('机构联系方式')"`                 //  机构联系方式
	//Status       int8      `json:"status" xorm:"notnull default 0 Tinyint(3) comment(状态)"`                           // 状态
	Rank      string    `json:"rank"   xorm:"notnull default '' Varchar(200) comment('祖籍关系，机构编码用@分隔')"`
	CreatedAt time.Time `json:"created_at" xorm:"notnull default CURRENT_TIMESTAMP timestamp comment('创建时间')"`
	UpdatedAt time.Time `json:"updated_at" xorm:"timestamp comment('更新时间')"`
}

// TableName get sql table name.获取数据库表名
func (org *Organization) TableName() string {
	return "organization"
}

type OrganizationList []Organization

// Equal TableName get sql table name.获取数据库表名
func (org *Organization) Equal(targetOrg Organization) bool {
	if org.Code == targetOrg.Code &&
		org.OrgName == targetOrg.OrgName &&
		org.ParentCode == targetOrg.ParentCode &&
		org.Mobile == targetOrg.Mobile &&
		org.Contact == targetOrg.Contact {
		return true
	}
	return false
}

func (list OrganizationList) OrgIds() []string {
	result := make([]string, 0, len(list))
	for _, v := range list {
		result = append(result, v.Code)
	}
	return result
}
func (list OrganizationList) OrgName(id uint32) string {
	result := ""
	for _, v := range list {
		if v.ID == id {
			result = v.OrgName
			break
		}
	}
	return result
}
